Skip to content

QA: run_qa v1.6 form + ExplicitImports#31

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicitimports
Jun 25, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports#31
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicitimports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

Converts test/qa/qa.jl to the SciMLTesting 1.6 run_qa form with ExplicitImports enabled:

using SciMLTesting, SparseBandedMatrices, JET, Test

run_qa(SparseBandedMatrices; explicit_imports = true)

This replaces the hand-rolled Aqua + bespoke JET (report_call/report_opt) qa.jl. Aqua now runs test_all with full defaults (the previous ambiguities = (recursive = false,) tweak was a no-op here — test_all passes with defaults), JET runs the canonical test_package (mode = :typo), and the six ExplicitImports checks are enabled.

ExplicitImports findings (all resolved by FIX; nothing ignored or marked broken)

check_no_implicit_imports flagged LinearAlgebra (LinearAlgebra, I, mul!) and PrecompileTools (PrecompileTools, @setup_workload, @compile_workload). Made the imports explicit in src/:

import LinearAlgebra: mul!
using .Threads: @threads
using PrecompileTools: @setup_workload, @compile_workload
  • mul! is now extended via the bare imported name (was LinearAlgebra.mul!).
  • The I flag was a false positive — it is the varargs parameter I::Int... in getindex/setindex!, not LinearAlgebra.I. It disappears once the blanket using LinearAlgebra is gone.
  • All 6 EI checks pass; no ei_kwargs ignores and no ei_broken entries are needed.

No aqua_broken/jet_broken/ei_broken markers (none were present before, and nothing newly fails).

Deps

  • test/qa/Project.toml: SciMLTesting compat floor 11.6; dropped the now-unused LinearAlgebra dep (qa.jl no longer uses it). ExplicitImports stays transitive via SciMLTesting (not added). Aqua / JET / SafeTestsets kept (Aqua's ambiguities child-process + JET + the @safetestset harness need them resolvable in the env).
  • Project.toml: bump PrecompileTools compat floor 11.1. Because the package now explicit-imports only PrecompileTools' macros, the macro expansion references the bare PrecompileTools module name, which is undefined under 1.0 (UndefVarError on load) — verified by pinning 1.0.0. 1.1 is the first self-contained-macro release; verified the package loads at the 1.1 floor.

Verification (local, Julia 1.10, released SciMLTesting 1.6.0)

  • QA group: 18/18 pass — Aqua 11, JET 1, ExplicitImports 6. 0 FAIL/ERROR/BROKEN.
  • Core group: 41/41 pass (constructors 4, division 3, interface 31, multiplication 3) — confirms the mul! extension change is behavior-preserving.
  • Downgrade floor check: package loads cleanly with PrecompileTools pinned to 1.1.0.

🤖 Generated with Claude Code

Convert test/qa/qa.jl to the SciMLTesting 1.6 `run_qa` form with
ExplicitImports enabled:

    using SciMLTesting, SparseBandedMatrices, JET, Test
    run_qa(SparseBandedMatrices; explicit_imports = true)

This replaces the hand-rolled Aqua + bespoke JET (`report_call`/`report_opt`)
qa.jl. Aqua now runs `test_all` with full defaults (the previous
`ambiguities = (recursive = false,)` tweak was a no-op here -- `test_all`
passes with defaults), JET runs the canonical `test_package`
(`mode = :typo`), and the six ExplicitImports checks are enabled.

ExplicitImports findings (all resolved by FIX, none ignored/broken):
`check_no_implicit_imports` flagged LinearAlgebra (`LinearAlgebra`, `I`,
`mul!`) and PrecompileTools (`PrecompileTools`, `@setup_workload`,
`@compile_workload`) as implicit imports. Made the imports explicit:

    import LinearAlgebra: mul!
    using .Threads: @threads
    using PrecompileTools: @setup_workload, @compile_workload

`mul!` is now extended via the bare imported name; the `I` flag was a
false positive (a varargs parameter, not LinearAlgebra.I) that disappears
once the blanket `using LinearAlgebra` is gone. All 6 EI checks pass.

Deps:
- test/qa/Project.toml: SciMLTesting compat floor -> "1.6"; drop the now
  unused LinearAlgebra dep (qa.jl no longer uses it). ExplicitImports stays
  transitive via SciMLTesting (not added). Aqua/JET/SafeTestsets kept
  (Aqua's ambiguities child-proc + JET + the @safetestset harness need them).
- Project.toml: bump PrecompileTools compat floor "1" -> "1.1". Because the
  package now explicit-imports only PrecompileTools' macros, the macro
  expansion references the bare `PrecompileTools` module name, which is
  undefined under 1.0 (UndefVarError on load); 1.1 is the first
  self-contained-macro release. Verified the package loads at the 1.1 floor.

Verified locally vs released SciMLTesting 1.6.0 (Julia 1.10): QA group 18/18
pass (Aqua 11, JET 1, ExplicitImports 6), Core group 41/41 pass, 0
FAIL/ERROR/BROKEN.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 25, 2026 16:36
@ChrisRackauckas ChrisRackauckas merged commit 0d11643 into SciML:main Jun 25, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants